'use strict';

const Controller = require('egg').Controller;

class FavaController extends Controller {
    // 收藏+取消收藏
  async video() {
    const {ctx,app}=this
    let currentUser=ctx.authUser
    // 参数验证
    ctx.validate({
        video_id:{
            type:'int',
            required:true,
            desc:'视频ID'    
        }
    })
    // 获取参数
    let {video_id}=ctx.request.body
    // 判断收藏是否存在
    let fava=await app.model.Fava.findOne({
        where:{video_id,user_id:currentUser.id}
    })
    // 存在则删除收藏--返回数据
    if(fava){
        await fava.destroy()
        return ctx.apiSuccess({
            status:false,
            msg:'取消成功'
        })
    }
    // 判断视频是否存在
    let video=await app.model.Video.findOne({
        where:{
            id:video_id
        }
    })
    // 如果不存在--返回数据
    if(!video){
        return ctx.apiFail('视频不存在');
    }
    // 存在则添加收藏
    await app.model.Fava.create({
        user_id:currentUser.id,
        video_id
    })
    // 放回数据
    ctx.apiSuccess({
        status:true,
        msg:'收藏成功'
    })

  }

    // 我的收藏列表
    async list(){
        let {app,ctx}=this
        let currentUser=ctx.authUser
        // 参数验证
        ctx.validate({
            user_id:{
                type:'int',
                required:true,
                desc:'用户id'
            },
            page:{
                type:'int',
                request:true,
                desc:'页码'
            }
        })
        // 获取参数
        let user_id=ctx.query.user_id
        // 查询收藏的同时关联视频表
        let rows=await ctx.page(app.model.Fava,{
            user_id
        },
        {
            include:[
                {
                    model:app.model.Video
                }
            ]
        })
        // 获取数据后进行数据整理
        rows=rows.map(item=>{
            return {
                created_time: item.video.created_time,
                id: item.video.id,
                title: item.video.title,
                cover: item.video.cover,
                category_id: item.video.category_id,
                user_id: item.video.user_id,
                duration: item.video.duration,
                desc: item.video.desc,
                play_count: item.video.play_count,
                danmu_count: item.video.danmu_count,
                updated_time: item.video.updated_time,
            }
        })
        // 返回数据
        ctx.apiSuccess(rows)
    }
}

module.exports = FavaController;
